home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / drdobbs / 1987 / 02 / basicex.lst next >
File List  |  1987-01-07  |  967b  |  49 lines

  1.  
  2.  
  3.  
  4. MODULE Factorial
  5.  
  6. PUBLIC Last_Fact ! Global variable
  7. PRIVATE Bad_Number ! Local routine
  8. DECLARE DEF Bad_Number ! Function declaration
  9. SHARE Fact_Array(30), Product, MAX ! Local static variables
  10.  
  11. !------------ Initialize module -----------
  12. let MAX = 30
  13. let Last_Fact = Bad_Number
  14. let Product = Bad_Number
  15. IF MAX > 30 THEN MAT REDIM Fact_Array(MAX) ! Adjust array size
  16. let Fact_Array(1) = 1
  17. FOR I = 2 TO MAX
  18.   let Fact_Array(I) = I * Fact_Array(I-1)
  19. NEXT I
  20.  
  21. !------------ LOCAL ROUTINES --------
  22.  
  23. DEF Bad_Number = -1.0E+200
  24.  
  25. !------------ EXPORTED ROUTINES -----
  26.  
  27. DEF Fact(N)
  28.  
  29. IF (INT(N) - N) <> 0 THEN 
  30.     let Fact = Bad_Number
  31. ELSE 
  32.     let Last_Fact = Product
  33.  
  34.     IF N <= MAX THEN 
  35.         let Product = Fact_Array(N)
  36.     ELSE
  37.         let Product = Fact_Array(MAX)
  38.         FOR I = MAX+1 TO N
  39.             let Product = I * Product
  40.         NEXT I
  41.     
  42.     END IF
  43.     let Fact = Product
  44. END IF
  45. END DEF
  46.  
  47. END MODULE
  48.  
  49.